// 另外一种模式：构造函数的方式 什么是构造函数？
// 构造函数也称之为构造器（constructor） 通常是我们在创建对象时会调用的函数;
// 在其他面向对象的编程语言里面，构造函数时存在于类中的一个方法，称之为构造方法
// 但是在js中的构造函数不太一样
// js中的构造函数是怎么样的？
// 构造函数也是一个普通的函数，从表现形式上来说，和千千万万个普通函数没有任何区别
// 如果这么一个普通函数被使用new操作符来调用，那么这个函数就称之为一个构造函数

function foo(){
    // console.log("foo,函数体代码")
}
 
//foo就是一个普通函数
// var p2 = foo()
// console.log(p2,'p2')
// 换一种方式来调用foo函数，通过new关键字去调用一个函数，那么这个函数就是一个构造函数了
var p1=new foo()
console.log(p1)

// 区别：如果一个函数被使用new操作符调用了，那么它会执行以下操作，
// 1，在内存中创建一个新的对象（空对象）
// 2,这个对象内部的[prototype]属性会被赋值为该构造函数的protype属性
// 3.构造函数内部的this,会指向创建出来的新对象
// 4.执行函数的内部代码(函数体代码)
// 5.如果构造函数没有返回非空对象，则返回创建出来的新对象
